﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AudiPyme.DAL;

namespace AudiPyme.UI
{
    public partial class RelacionesNewTipActAmenCritRies : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void CVTipActAmenVuln_ServerValidate(object source, ServerValidateEventArgs args)
        {
            //Recogemos el Tipo de Activo y la Amenaza y el Criterio de Riesgo seleccionados
            String TipoActivoSelec = DdlTipoActivo.SelectedValue;
            String AmenazaSelec = DdlAmenaza.SelectedValue;
            String CriterioRiesgoSelec = DdlCriterioRiesgo.SelectedValue;
            //Recogemos los Id's asociados al Tipo de Activo, Amenaza y Vulnerabilidad seleccionadas
            ModeloContainer agenteBD = new ModeloContainer();
            int IdTipoActivoSelec = TiposActivosFactory.BuscarIdTipoActivo(TipoActivoSelec);
            int IdAmenazaSelec = AmenazasFactory.BuscarIdAmenaza(AmenazaSelec);
            int IdCriterioRiesgoSelec = CriteriosRiesgoFactory.BuscarIdCriterioRiesgo(CriterioRiesgoSelec);
            //Comprobamos que no existe dicha tupla en la Matriz
            if (Matriz_TipoActivosAmenazasCriteriosRiesgoFactory.EstaRelacionMatriz_TipoActivosAmenazasCriterioRiesgo(IdTipoActivoSelec, IdAmenazaSelec, IdCriterioRiesgoSelec))
            {
                //Si existe forzamos a que el validador sea falso
                args.IsValid = false;
            }
        }

        protected void BtnInsertar_Click(object sender, EventArgs e)
        {
            int IdEmpresa = DatosEmpresa();
            if (IdEmpresa != -1)
            {
                LblInsertar.Visible = false;
                Page.Validate("ValidarFormulario");
                if (Page.IsValid)
                {
                    ModeloContainer agenteBD = new ModeloContainer();
                    Matriz_TipoActivosAmenazasCriteriosRiesgo m = new Matriz_TipoActivosAmenazasCriteriosRiesgo();
                    //Recogemos el Tipo de Activo y la Amenaza y el Criterio de Riesgo seleccionados
                    String TipoActivoSelec = DdlTipoActivo.SelectedValue;
                    String AmenazaSelec = DdlAmenaza.SelectedValue;
                    String CriterioRiesgoSelec = DdlCriterioRiesgo.SelectedValue;
                    //Creo la estructura de la relación según los atributos recogidos en la interfaz
                    int IdTipoActivoSelec = TiposActivosFactory.BuscarIdTipoActivo(TipoActivoSelec);
                    int IdAmenazaSelec = AmenazasFactory.BuscarIdAmenaza(AmenazaSelec);
                    int IdCriterioRiesgoSelec = CriteriosRiesgoFactory.BuscarIdCriterioRiesgo(CriterioRiesgoSelec);
                    InstanciaTiposActivosAmenazasCriteriosRiesgo nuevaInstancia =
                                        new InstanciaTiposActivosAmenazasCriteriosRiesgo(IdEmpresa,IdTipoActivoSelec,IdAmenazaSelec,IdCriterioRiesgoSelec,true);
                    /*
                     * LA RESTRICCIÓN EN LA BASE DE DATOS HACE QUE NO PUEDA INSERTARLO
                     * ¿MERECE LA PENA QUITAR LA RESTRICCIÓN PARA HACER MÁS FLEXIBLE LA
                     * APLICACIÓN?...
                     * 
                     * 
                    InstanciaTiposActivosAmenazasCriteriosRiesgoFactory.InsertarInstanciaTipActAmenCrit(nuevaInstancia);
                    LblInsertar.Visible = true;
                     * 
                     * 
                     * 
                     */ 
                }
            }
        }

        private int DatosEmpresa()
        {
            int IdEmpresa = -1;
            String nombreUsuario = (String)Session["nombreUsuario"];
            if (String.IsNullOrEmpty(nombreUsuario))
            {
                LblInsertar.Text = "No se pudo encontrar el usuario";
                LblInsertar.Visible = true;
                return -1;
            }
            else
            {
                IdEmpresa = UsuariosFactory.EmpresaUsuario(nombreUsuario);
                if (IdEmpresa == 0)
                {
                    LblInsertar.Text = "El usuario " + nombreUsuario + " no esta asociado a una empresa";
                    LblInsertar.Visible = true;
                    return -1;
                }
                else
                {
                    return IdEmpresa;
                }
            }
        }

    }
}